package com.netty.coder;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;

import java.util.List;

import com.message.Message;

/**
 * SS通信解码器
 * 
 * @author zhoufang
 *
 *         2017年12月23日下午9:29:12
 */
public class Server2ServerDecoder extends ByteToMessageDecoder {

	// --length--|--actionId--|--responseId--|--bodyLength--|--body--|
	// --包总长---|--行为Id----|--回调Id-------|--消息体长度---|--消息体--|
	// ----4-----|-----4------|-----4--------|------4-------|---len---|

	@Override
	protected void decode(ChannelHandlerContext ctx, ByteBuf in,
			List<Object> out) throws Exception {
		int actionId = in.readInt(); // 行为Id
		int responseId = in.readInt(); // 回调Id
		int bodyLength = in.readInt(); // 消息体长度
		byte[] bytes = new byte[bodyLength];
		in.readBytes(bytes);
		Message msg = Message.buildMessage(actionId, responseId, bytes);
		out.add(msg);
	}

}
